<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Chapter 5. 変数の修飾子</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.75.1">
<link rel="home" href="index.html" title="Smarty マニュアル">
<link rel="up" href="smarty.for.designers.html" title="Part II. テンプレートデザイナのための Smarty">
<link rel="prev" href="language.variables.smarty.html" title="予約変数 {$smarty}">
<link rel="next" href="language.modifier.cat.html" title="cat">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr><th colspan="3" align="center">Chapter 5. 変数の修飾子</th></tr>
<tr>
<td width="20%" align="left">
<a accesskey="p" href="language.variables.smarty.html">Prev</a> </td>
<th width="60%" align="center">Part II. テンプレートデザイナのための Smarty</th>
<td width="20%" align="right"> <a accesskey="n" href="language.modifier.cat.html">Next</a>
</td>
</tr>
</table>
<hr>
</div>
<div class="chapter" title="Chapter 5. 変数の修飾子">
<div class="titlepage"><div><div><h2 class="title">
<a name="language.modifiers"></a>Chapter 5. 変数の修飾子</h2></div></div></div>
<div class="toc">
<p><b>Table of Contents</b></p>
<dl>
<dt><span class="sect1"><a href="language.modifiers.html#language.modifier.capitalize">capitalize</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.cat.html">cat</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.count.characters.html">count_characters</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.count.paragraphs.html">count_paragraphs</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.count.sentences.html">count_sentences</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.count.words.html">count_words</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.date.format.html">date_format</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.default.html">default</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.escape.html">escape</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.indent.html">indent</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.lower.html">lower</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.nl2br.html">nl2br</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.regex.replace.html">regex_replace</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.replace.html">replace</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.spacify.html">spacify</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.string.format.html">string_format</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.strip.html">strip</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.strip.tags.html">strip_tags</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.truncate.html">truncate</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.upper.html">upper</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.wordwrap.html">wordwrap</a></span></dt>
</dl>
</div>
<p>
  変数の修飾子は、
  <a class="link" href="language.syntax.variables.html" title="変数">変数</a> や
  <a class="link" href="language.custom.functions.html" title="Chapter 8. カスタム関数">カスタム関数</a>
  や文字列を修飾して出力することができます。修飾子を適用するには、
  変数名の後に <code class="literal">|</code> (パイプ) と修飾子の名前を指定します。
  また、修飾子はその動作に影響を及ぼす追加のパラメータを受け入れる場合もあります。
  そのパラメータは修飾子の後に続き、<code class="literal">:</code> (コロン) によって区切られます。
  また、<span class="emphasis"><em>すべての PHP 関数は、暗黙的に修飾子として使用でき</em></span>
  (あとで説明します)、修飾子は <a class="link" href="language.combining.modifiers.html" title="Chapter 6. 修飾子の連結">組み合わせる</a>
  こともできます。
 </p>
<div class="example">
<a name="id2756626"></a><p class="title"><b>Example 5.1. 修飾子の例</b></p>
<div class="example-contents"><pre class="programlisting">

{* 変数に修飾子を適用 *}
{$title|upper}

{* パラメータを持つ修飾子 *}
{$title|truncate:40:'...'}

{* テンプレート関数のパラメータに修飾子を適用 *}
{html_table loop=$myvar|upper}

{* パラメータ付き *}
{html_table loop=$myvar|truncate:40:'...'}

{* リテラル文字列に修飾子を適用 *}
{'foobar'|upper}

{* 現在の日付を整形するために date_format を使用 *}
{$smarty.now|date_format:"%Y/%m/%d"}

{* カスタム関数に修飾子を適用 *}
{mailto|upper address='smarty@example.com'}

{* php の str_repeat を使用 *}
{'='|str_repeat:80}

{* php の count *}
{$myArray|@count}

{* php の shuffle をサーバの ip に対して使用 *}
{$smarty.server.SERVER_ADDR|shuffle}

(* 配列全体の大文字変換と切り詰め *}
&lt;select name="name_id"&gt;
{html_options output=$myArray|upper|truncate:20}
&lt;/select&gt;

  </pre></div>
</div>
<br class="example-break"><div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
<p>
  配列に対して修飾子を用いた場合は、その配列に格納された全ての値に影響を及ぼします。
  配列全体を１つの値として作用させるには修飾子の先頭に <code class="literal">@</code>
  記号をつける必要があります。
  </p>
<div class="note" title="例" style="margin-left: 0.5in; margin-right: 0.5in;">
<h3 class="title">例</h3>
<p><code class="literal">{$articleTitle|@count}</code> - これは、
  配列 <em class="parameter"><code>$articleTitle</code></em> の要素数を、php の
  <a class="ulink" href="http://php.net/count" target="_top"><code class="varname">count()</code></a>
  関数を修飾子として用いて出力します。
  </p>
</div>
<p>
  </p>
</li>
<li class="listitem"><p>
  修飾子は <a class="link" href="variable.plugins.dir.html" title="$plugins_dir"><em class="parameter"><code>$plugins_dir</code></em></a>
  から自動的に読み込むか、明示的に <a class="link" href="api.register.modifier.html" title="register_modifier()"><code class="varname">register_modifier()</code></a>
  関数で登録します。２つ目の方法は、PHP スクリプトと Smarty テンプレートで
  関数を共有する場合などに有用です。
  </p></li>
<li class="listitem">
<p>
  先ほどの例で示したように、全ての PHP 関数は暗黙で修飾子として使用する事ができます。
  しかし、修飾子としてPHP関数を使うには２つの小さな落とし穴があります。
   </p>
<div class="itemizedlist"><ul class="itemizedlist" type="circle">
<li class="listitem"><p>第１に、 たまに関数のパラメータの順序が望ましいものではなくります。
   <code class="literal">$foo</code> を
   <code class="literal">{"%2.f"|sprintf:$foo}</code> でフォーマットすることはできますが、
   Smarty が提供する方式である <code class="literal">{$foo|string_format:"%2.f"}</code>
   のほうがより直感的です。
  </p></li>
<li class="listitem"><p>
   第２に、<a class="link" href="variable.security.html" title="$security">
   <em class="parameter"><code>$security</code></em></a> が有効な場合、
   修飾子として使用される全ての PHP 関数は
   <a class="link" href="variable.security.settings.html" title="$security_settings">
   <em class="parameter"><code>$security_settings</code></em></a> 配列の
   <code class="literal">MODIFIER_FUNCS</code> 要素で
   信頼できるものとして定義される必要があります。
  </p></li>
</ul></div>
<p>
 </p>
</li>
</ul></div>
<p>
  <a class="link" href="api.register.modifier.html" title="register_modifier()"><code class="varname">register_modifier()</code></a>、
  <a class="link" href="language.combining.modifiers.html" title="Chapter 6. 修飾子の連結">修飾子の連結</a>
  および
  <a class="link" href="plugins.html" title="Chapter 16. プラグインによる Smarty の拡張">プラグインによる Smarty の拡張</a>
  も参照してください。
 </p>
<div class="sect1" title="capitalize">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="language.modifier.capitalize"></a>capitalize</h2></div></div></div>
<p>
     変数内の全ての単語の先頭を大文字で開始します。
     PHP の <a class="ulink" href="http://php.net/ucwords" target="_top">
   <code class="varname">ucwords()</code></a> 関数と似ています。
  </p>
<div class="informaltable"><table border="1">
<colgroup>
<col align="center">
<col align="center">
<col align="center">
<col align="center">
<col>
</colgroup>
<thead><tr>
<th align="center">パラメータの位置</th>
<th align="center">型</th>
<th align="center">必須</th>
<th align="center">デフォルト</th>
<th>概要</th>
</tr></thead>
<tbody><tr>
<td align="center">1</td>
<td align="center">boolean</td>
<td align="center">No</td>
<td align="center"><code class="constant">FALSE</code></td>
<td>数字とセットの単語を大文字にするかどうか</td>
</tr></tbody>
</table></div>
<div class="example">
<a name="id2757578"></a><p class="title"><b>Example 5.2. capitalize</b></p>
<div class="example-contents">
<pre class="programlisting">

&lt;?php

$smarty-&gt;assign('articleTitle', 'next x-men film, x3, delayed.');

?&gt;

   </pre>
<p>
    テンプレート
   </p>
<pre class="programlisting">

{$articleTitle}
{$articleTitle|capitalize}
{$articleTitle|capitalize:true}

   </pre>
<p>
    出力
   </p>
<pre class="screen">

next x-men film, x3, delayed.
Next X-Men Film, x3, Delayed.
Next X-Men Film, X3, Delayed.

   </pre>
</div>
</div>
<br class="example-break"><p>
   <a class="link" href="language.modifier.lower.html" title="lower"><code class="varname">lower</code></a>
   および
   <a class="link" href="language.modifier.upper.html" title="upper"><code class="varname">upper</code></a>
   も参照してください。
   </p>
</div>
</div>
<div class="navfooter">
<hr>
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left">
<a accesskey="p" href="language.variables.smarty.html">Prev</a> </td>
<td width="20%" align="center"><a accesskey="u" href="smarty.for.designers.html">Up</a></td>
<td width="40%" align="right"> <a accesskey="n" href="language.modifier.cat.html">Next</a>
</td>
</tr>
<tr>
<td width="40%" align="left" valign="top">予約変数 {$smarty} </td>
<td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td>
<td width="40%" align="right" valign="top"> cat</td>
</tr>
</table>
</div>
</body>
</html>
